// src/utils/smCrypto.js
import { sm2, sm3, sm4 } from 'sm-crypto'

/**
 * SM2 非对称加密（推荐用于密码加密）
 * @param {string} plainText 明文
 * @param {string} publicKey 后端提供的公钥（通常需要接口获取）
 * @returns {string} 加密后的密文（16进制字符串）
 */
export const encryptBySM2 = (plainText, publicKey) => {
  return sm2.doEncrypt(plainText, publicKey, 0) // 0 表示输出16进制
}

/**
 * SM3 哈希算法（可用于数据完整性校验）
 * @param {string} data 
 * @returns {string} 64位哈希值
 */
export const hashBySM3 = (data) => {
  return sm3(data)
}

/**
 * SM4 对称加密（需要与后端协商密钥）
 * @param {string} plainText 
 * @param {string} key 16字节密钥
 * @returns {string} 加密后的密文
 */
export const encryptBySM4 = (plainText, key) => {
  return sm4.encrypt(plainText, key)
}

// 示例密钥（实际应由后端提供）
export const demoPublicKey = '04d6f5d8e9a7c5b0f1e3d2c4b5a6978f0e1d2c3b4a59687f0e1d2c3b4a59687f0e1d2c3b4a59687f0e1d2c3b4a59687f0'